<?php

class pgs {
  var $_itens = array();
  var $_config = array ();
  var $_cliente = array ();

  function pgs($args = array()) {
    if ('array'!=gettype($args)) $args=array();
    $default = array(
      'email_cobranca'  => '',
      'tipo'            => 'CP',
      'moeda'           => 'BRL',
    );
    $this->_config = $args+$default;
  }

  function error($msg){
    trigger_error($msg);
    return $this;
  }

  function adicionar($item) {

    if ('array' !== gettype($item))
      return $this->error("Item precisa ser um array.");
    if(isset($item[0]) && 'array' === gettype($item[0])){
      foreach ($item as $elm) {
        if('array' === gettype($elm)) {
        if($elm["valor"]>1){  
           $this->adicionar($elm);
          }
        }
      }
      
    return $this;
    } 

    $tipos=array(
      "id" =>         array(1,"string",                '@\w@'         ),
      "quantidade" => array(1,"string,integer",        '@^\d+$@'      ),
      "valor" =>      array(1,"double,string,integer", '@^\d*\.?\d+$@'),
      "descricao" =>  array(1,"string",                '@\w@'         ),
      "frete" =>      array(0,"string,integer",        '@^\d+$@'      ),
      "peso" =>       array(0,"string,integer",        '@^\d+$@'      ),
    );

    foreach($tipos as $elm=>$valor){
      list($obrigatorio,$validos,$regexp)=$valor;
      if(isset($item[$elm])){
        if(strpos($validos,gettype($item[$elm])) === false ||
          (gettype($item[$elm]) === "string" && !preg_match($regexp,$item[$elm]))){
          return $this->error("Valor invalido passado para $elm.");
        }
      }elseif($obrigatorio){
        return $this->error("O item adicionado precisa conter $elm");
      }
    }

    $this->_itens[] = $item;
    return $this;
  }
 
  function cliente($args=array()) {
    if ('array'!==gettype($args)) return;
    $this->_cliente = $args;
  }
  
  function mostra ($args=array()) {
    $default = array (
      'print'       => true,
      'open_form'   => false,
      'close_form'  => false,
      'show_submit' => false,
      'img_button'  => false,
      'bnt_submit'  => false,
    );
    $args = $args+$default;
    $_input = '  <input type="hidden" name="%s" value="%s"  />';
    $_form = array();
    if ($args['open_form'])
      $_form[] = '<form target="pagseguro" action="https://pagseguro.uol.com.br/checkout/checkout.jhtml" method="post">';
    foreach ($this->_config as $key=>$value)
      $_form[] = sprintf ($_input, $key, $value);
    foreach ($this->_cliente as $key=>$value)
      $_form[] = sprintf ($_input, "cliente_$key", $value);

    $assoc = array (
      'id' => 'item_id',
      'descricao' => 'item_descr',
      'quantidade' => 'item_quant',
    );
    $i=1;
    foreach ($this->_itens as $item) {
      foreach ($assoc as $key => $value) {
        $sufixo=($this->_config['tipo']=="CBR")?'':'_'.$i;
        $_form[] = sprintf ($_input, $value.$sufixo, $item[$key]);
        unset($item[$key]);
      }
      $_form[] = str_replace ('.', '', sprintf ('  <input type="hidden" name="%s" value="%s"  />', "item_valor$sufixo", $item['valor']));
      unset($item['valor']);

      foreach ($item as $key=>$value)
        $_form[] = sprintf ($_input, "item_{$key}{$sufixo}", $value);

      $i++;
    }
    if ($args['show_submit']) {
      if ($args['img_button']) {
        $_form[] = sprintf('  <input type="image" src="%s" name="submit" alt="Pague com o PagSeguro - &eacute; r&aacute;pido, gr&aacute;tis e seguro!"  />', $args['img_button']);
      } elseif ($args['btn_submit']) {
        switch ($args['btn_submit']) {
          case 1:  $btn = 'btnComprarBR.jpg'; break;
          case 2:  $btn = 'btnPagarBR.jpg'; break;
          case 3:  $btn = 'btnPagueComBR.jpg'; break;
          case 4:  $btn = 'btnComprar.jpg'; break;
          case 5:  $btn = 'btnPagar.jpg'; break;
          default: $btn = 'btnComprarBR.jpg';
        }
        $_form[] = sprintf ('  <input type="image" src="https://pagseguro.uol.com.br/Security/Imagens/%s"  name="submit" alt="Pague com o PagSeguro - &eacute; r&aacute;pido, gr&aacute;tis e seguro!" />', $btn);
      } else {
        $_form[] = '  <input type="submit" value="Pague com o PagSeguro"  />';
      }
    }
    if($args['close_form']) $_form[] = '</form>';
    $return = implode("\n", $_form);
    if ($args['print']) print ($return);
    return $return;
  }
}

//inicio do tratamento

if(!isset($fretegratis)){ 
if(isset($this->session->data['shipping_method'])){
$valorfe =preg_replace("/[^0-9]/", "", $this->session->data['shipping_method']['text']);

if($this->session->data['shipping_method']['id']!='free.free'){

if($valorfe<1){
$errofrete=true;

}

}

}else {
$valorfe=0;
}

}else if($fretegratis==true){
$valorfe=0;
}



$zip= preg_replace("/[^0-9]/", "",$zip);

if(!isset($numero)){
$numero="0";
}
if(!isset($bairro)){
$bairro="NA";
}
if(!isset($ddd)){
$ddd="00";
}

$pgs=new pgs();



$pgs->cliente(
  array (
   'nome'   => $first_name.' '.$last_name,
   'cep'    => $zip,
   'end'    => $address1,
   'num'    => $numero,
   'compl'  => $address2,
   'bairro' => $bairro,
   'cidade' => $city,
   'uf'     => $estado,
   'pais'   => $country,
   'ddd'    => $ddd,
   'tel'    => $telephone,
   'email'  => $email
  )
);
?>

<form action="<?php echo $action; ?>" method="post" id="formpagseguro">

<?php

$pesototal_produtos=0;
$i=1;
$iddoproduto=array();
foreach ($products as $product) {
$produtoid=$product['id'];
$preco = $product['valor'];
$preco = preg_replace("/[^0-9]/", "", $preco);
$pesoprod = preg_replace("/[^0-9]/", "", $product['peso']);
$dopcoes='';
$descricaoproduto = $product['descricao'];

foreach ($product['option'] as $option) { 
 $dopcoes.=' -'.$option['name'].' '.$option['value'];
  } 

$descricaoproduto.= $dopcoes; 

$produtoid = str_replace($iddoproduto, $produtoid."#".$i, $produtoid);

if(($i==1) or (isset($errofrete))){
if(isset($errofrete)){
$pesototal_produtos=+$pesoprod;
$pgs->adicionar(array(
array( 
    "descricao"=>$descricaoproduto,
    "valor"=>$preco,
    "quantidade"=>$product['quantidade'],
    "id"=>$produtoid
  ),
));

}else{
$pgs->adicionar(array(
array( 
    "descricao"=>$descricaoproduto,
    "valor"=>$preco,
    "quantidade"=>$product['quantidade'],
    "id"=>$produtoid
  ),
));
}
}else{
$pgs->adicionar(array(
array( 
    "descricao"=>$descricaoproduto,
    "valor"=>$preco,
    "quantidade"=>$product['quantidade'],
    "id"=>$produtoid,
    "frete"=>0
  ),
));
}

//cupom de desconto

$i++;
$iddoproduto[]=$produtoid;
}

//erro no calculo do frete
if(!isset($errofrete)){
$pgs->pgs(array('email_cobranca'=> $mailpg,
				  'ref_transacao'=> $codipedido,
				  'item_frete_1' => $valorfe
));
}else{
$pgs->pgs(array('email_cobranca'=> $mailpg,
				  'ref_transacao'=> $codipedido,
                  'item_peso_1' => $pesototal_produtos
                  ));

}



$pgs->mostra();
/*if(isset($cupondedesconto)){

if($cupondedesconto>0){
$cupondedesconto = preg_replace("/[^0-9]/", "", $cupondedesconto);
//echo '<input name="EXTRAS" value="-'.$cupondedesconto.'" type="hidden">';

echo "\n".'<input name="item_id_'.$i.'" value="-1" type="hidden">
  <input name="item_descr_'.$i.'" value="'.$cupomnome.'" type="hidden">
  <input name="item_quant_'.$i.'" value="1" type="hidden">
  <input name="item_valor_'.$i.'" value="'.($cupondedesconto* -1).'" type="hidden">
  <input name="item_frete_'.$i.'" value="0" type="hidden">';
}
}*/

//caso erro no calculo do frete
if(isset($errofrete)){
if($this->session->data['shipping_method']['id']=='pac.pac'){
echo "\n".'<input name="tipo_frete" value="EN" type="hidden">';
}else if($this->session->data['shipping_method']['id']=='sedex.sedex'){
echo "\n".'<input name="tipo_frete" value="SD" type="hidden">';
}
}
?>


</form>

<div style="background: #F7F7F7; border: 1px solid #DDDDDD; padding: 10px; margin-bottom: 10px;">
  <br />
  <center><img src="https://pagseguro.uol.com.br/security/Imagens/468x60_10X_pagseguro.gif" border="0" alt="PagSeguro" /></center><br />
Apos clica em <b>Pague com PagSeguro</b> voc&ecirc; sera redirecionado para o PagSeguro para efetuar o pagamento
  <br />
    <br />
  </div>
  <div class="buttons">
  <table>
    <tr>
      <td align="left"><a onclick="location='<?php echo $back; ?>'" class="button"><span><?php echo $button_back; ?></span></a></td>
      <td align="right"><a id="checkout" ><span><img src="https://p.simg.uol.com.br/out/pagseguro/i/botoes/carrinhoproprio/btnFinalizaBR.jpg" border="0" /></span></a></td>
    </tr>
  </table>
</div>
<script type="text/javascript"><!--
$('#checkout').click(function() {
 $('body').css("cursor", "wait");
$('#checkout').hide('fast');
	$.ajax({ 
		type: 'GET',
		url: 'index.php?route=payment/pagseguro/confirm',
		success: function() {
			 $('#formpagseguro').submit();
		}		
	});
});
//--></script>